iT邦幫忙

2021 iThome 鐵人賽

DAY 13
1
AI & Data

Attention到底在關注什麼?系列 第 13

Day 13 Self-attention(七) Positional Encoding、self-attention和其他model的比較

  • 分享至 

  • xImage
  •  

Positional Encoding

如果依照前面講到的,self-attention只有vector之間的相關聯性,並沒有位置的資訊

那我們可以使用一個positional vector,https://chart.googleapis.com/chart?cht=tx&chl=e%5Ei,把這個https://chart.googleapis.com/chart?cht=tx&chl=e%5Ei加進https://chart.googleapis.com/chart?cht=tx&chl=a%5Ei,就可以將位置資訊加入input了

但是還有一個問題是,這個https://chart.googleapis.com/chart?cht=tx&chl=e%5Ei是人設定的,並不是自動產生的

在attention is all you need這篇論文中,只有用cos、sin的function來產生positional vector

但是在後續的一些論文中,有提出用不同的方法來產生出positional vector,但是目前並沒有說哪一個方法所產生出來的positional vector是最好的,因此對於自己要train的資料集,還是需要自己survey哪一個方法是最有用的

Applications

self-attention可以用在很多地方上面,現在比較多的應用都是在Natural Langue Processing(自然語言處理),比較常見的方法有兩個

  • Transformer
  • Bert

由於之後主要會進入到實作的部分,在做推薦系統上面可能會有機會用到上面提到的這兩種方法,到時候再詳細解釋

Self-attention v.s. CNN

如果我們是用self-attention來處理圖片會發生什麼事情呢?

self-attention是在一張圖片中的某一個pixel產生query,其他的pixel產生key,所以每一個pixel都會考慮到和整張圖片的相關聯性

但是CNN只會去考慮到影像中的receptive field,這個範圍可能是3x3的範圍

所以可以說CNN是簡化版的self-attention,而self-attention是比較複雜的CNN

這兩個model比較起來,如果self-attention的參數設定的好的話,是可以達到跟CNN一樣的效果的

由於self-attention是比較廣泛的CNN,而CNN是有受限制的self-attention

但是受限制的CNN在資料集比較小的時候反而效果比較好

而self-attention在資料集大的時候效果比較好

因此在圖像辨識上要使用self-attention或是CNN可以取決於資料集的大小

Self-attention v.s. RNN

RNN也是要處理一個序列(Sequence)的input

這邊來簡單解釋一下RNN

一開始會有一個memory的vector,另外有一個RNN的model

第一個vector和memory的vector會被丟進RNN,RNN會產生一個hidden layer,在經過FC(全連階層)就可以得到第一個輸出

第二個輸出則是要將第一個hidden layer的資料跟第二個vector一起丟進RNN,再產生第二個hidden layer,經過FC(全連階層)得到第二個輸出

之後的都以此類推

那他們最主要的差別就是,RNN會因為傳遞的越多,導致資訊流失的越多,因此圖中右上方的黃色輸出是很難考慮到左下方的藍色輸入的

但是self-attention只需要藍色的輸入給一個query,黃色的輸入給一個key,做內積之後就會知道相似程度了,因此self-attention在考慮前面的輸入時,是處理的比較好的

另外一個大問題就是運算速度

由於前面有提到說self-attention是平行運算的,但是RNN要等到前面的輸出結果出來之後,才能夠再去做接續的動作,因此self-attention的運算速度是比較快的

後記

今天將self-attention的部分講解完了,明天開始會講解如何使用azure來實作capsule跟self-attention,由於我沒有使用過azure,因此邊學邊寫文章吧


上一篇
Day 12 Self-attention(六) Multi-Head Self-attention
下一篇
Day 14 在VSCode中使用Azure
系列文
Attention到底在關注什麼?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言